#pragma once

#include "../SQLExpr.h"
#include "../SQLExprImpl.h"
#include "../SQLDataType.h"
class SQLASTVisitor;

class SQLCastExpr : virtual public SQLExprImpl
{

private:
	SQLExpr_ptr expr;
	SQLDataType_ptr dataType;

public:
	SQLCastExpr();
	virtual ~SQLCastExpr();
	SHAREDOBJECT(SQLCastExpr) ;

	SQLExpr_ptr getExpr();

	void setExpr(SQLExpr_ptr expr);

	SQLDataType_ptr getDataType();

	void setDataType(SQLDataType_ptr dataType);

	BOOL_ptr isTry() { return isTry_; }

	void setTry(BOOL_ptr aTry) { isTry_ = aTry; }

protected:
	void accept0(SQLASTVisitor_ptr visitor);
	BOOL_ptr isTry_;

public:
	// int hashCode();
	// public BOOL_ptr equals(Object obj);
};

